#ifndef __BoardWork_H
#define __BoardWork_H

#ifdef APM32E10X_HD
	#include "apm32e10x_misc.h"
#elif defined AT32F403AVGT7
	#include "at32f403a_407_misc.h"
#else
	#include "apm32f10x_misc.h"
#endif

#include "BoardData.h"
#include "Led.h"
#include "Key.h"
#include "Board.h"
#include "flash.h"
#include "tools.h"
#include <math.h>
#include <stdbool.h>

#if (UI_Meter_Method == Meter_GuageIC_RN8209)
	#include "rn8209.h"
#elif (UI_Meter_Method == Meter_GuageIC_RN8302B)
	#include "rn8302B.h"
#endif

#if beep_type == beep_APM || beep_type == beep_BPM
#include "buzzer.h"
#endif

#if Nor_Flash > 0
#include "NorFlash.h" 
#endif

#if Upboard_IIC == 1
#include "upboard.h"
#endif

#if BleWifi_type == BleWifi_Ai_WB2
#include "bleWifi.h" 
#endif

// 函数
void data_init(void);
void assign_flash_data(void);
void get_I_rated_value(void);
#if (UI_Meter_Method > Meter_SelfADC)   
void readUIValueFromGuage(void);   
#endif

void get_U_state(void);
#if Volt_Protection > 0
void errRecover_underU_state(void);
void errRecover_overU_state(void);
#endif
void get_I_state(void);
void errRecover_overI_state(void);
void get_cp_value_id(void);
void get_cp_state(void);
void get_cp_state_post(void);
void plug_in_action(void);
void plug_out_action(void);
#if tmpr_EN > 0
void get_tmpr_state(void);
#endif
void errRecover_overTempr_state(void);

#ifndef UsingFreeRTOS
void protect_recover(void);
#endif
void protect_recover_action(void);

void leakage_event_treat(void);

#if PE_ON > 0
void get_PE_state(void);
#endif

void self_check(void);

#if RlyAdh_Detect_type > 0
void Get_RlyAdh_Status(void);
#endif

#ifdef LedCtrl_Rolling
void mTaskLedRollStart(void);
void mTaskLedRollBlink(void);
#endif

#if Using_UART_LCD == LCD_0P42_IIC
void getShowData(void);
#endif

void mTaskLedStartUp(void);
#if finger_sensor_type == Finger_HLK_ZW101_EINT
void mTaskFingerInitStartUp(void);
#endif
void mTaskLedAllBlinkStop(void);

void mEventKeyTreat(void);

void mTaskLedBlinkStart(void);
void mTaskLedBlink(void);

void UpBoard_DisplayUpdate(void);

////////////////// 处理串口发来的数据 ////////////////////////
#if using_uart1 > 0
void treatUart1Info(void);
#endif
#if using_uart2 > 0
void treatUart2Info(void);
#endif
#if using_uart3 > 0
void treatUart3Info(void);
#endif
#if using_uart4 > 0
void treatUart4Info(void);
#endif
#if using_uart5 > 0
void treatUart5Info(void);
#endif

#if BleWifi_type == BleWifi_Ai_WB2
void uart_bleWifi_treat(void);
#endif

#if LOG_ON > 0
uint8_t log_data_append(struct log_Item logAppend);
void printLogs(void);
void printPageLogs(void);
#endif

#if CURVE_ON > 0
uint8_t curv_data_append(struct Curv_Item curvAppend);
void printCurvDatas(void);
void printPageCurvDatas(void);
#endif

void mTaskLed_strategy(void);
void mTaskCharge_strategy(void);
uint8_t mTaskFault_strategy(void);

#endif
